package pwd.allen.behavior.mediator;

import java.util.ArrayList;
import java.util.List;

/**
 * 中介者实现类
 *
 * 拓展：
 *  不定义中介者接口，把具体中介者对象实现成为单例
 *  同事对象不持有中介者，而是在需要的时候直接获取中介者对象并调用。
 *
 * @author 门那粒沙
 * @create 2021-05-22 21:18
 **/
public class ConcreteMediator extends Mediator {
    private List<Colleague> colleagues = new ArrayList<Colleague>();
    @Override
    public void register(Colleague colleague) {
        if (!colleagues.contains(colleague)) {
            colleagues.add(colleague);
            colleague.setMedium(this);
        }
    }
    @Override
    public void relay(Colleague cl) {
        for (Colleague ob : colleagues) {
            if (!ob.equals(cl)) {
                ob.receive();
            }
        }
    }
}
